<?php
namespace Admin\Controller;
class AdminController extends BaseController{
	function adminer(){
		$this->display();
	}
	function adminOper(){
		$this->display();
	}
	function adminPage(){
		$this->display();
	}
	function adminCom(){
		//查询用户组，返回到模板
		$pdo = D('admingroup');
		$admingroupArr = $pdo->field('title')->select();
		$this->assign('admingroupArr',$admingroupArr);
		$this->display();
	}
	function adminRuleAdd(){
		if(!empty($_POST)){
			if(isset($_POST['admingroupId'])){
				$admingroupId = $_POST['admingroupId'];
				//拆分$admingroupId
				$admingroupIdArr = explode(',', $admingroupId);
				
				unset($_POST['admingroupId']);
				
			}
			//添加权限
			$pdoRule = D('Adminrule');
			$ce = $pdoRule->create();
			if($ce){
				$result = $pdoRule->add();
				$rulesId = $pdoRule->getLastInsID();//获取权限id
				if($result){
					//向用户组增加权限
					if($admingroupId){
						$pdoGroup = D('Admingroup');
						
						foreach ($admingroupIdArr as $v){
						//先查询该用户组的权限再进行数据拼装
							$rules = $pdoGroup->field('rules')->where("id='%s'",array($v))->find();
							$rule=$rules['rules'];
							if($rules){$data =array('rules'=>$rule.','.$rulesId);};						
							$re = $pdoGroup->where("id='%s'",array($v))->data($data)->save();
						}
						if($re){
							$info = array('mes'=>1,'content'=>'添加成功！');
							$this->ajaxReturn($info);
						}else{
							$info = array('mes'=>2,'content'=>'权限添加成功！用户组权限分配失败！');
							$this->ajaxReturn($info);
						};
					}
				}else{
					$info = array('mes'=>3,'content'=>'权限添加失败！');
					$this->ajaxReturn($info);
					//权限添加失败
				}
			}else{
				$error = $pdoRule->getError();
				$info = array('mes'=>4,'content'=>$error);
				$this->ajaxReturn($info);
				//创建数据失败
			}
		}
		
	}
	/*
	 * @discribe 用户组管理，添加用户组
	 * @param void
	 */
	function adminGroup(){
		$pdo = D('Admingroup');
		$pdoRule=D('Adminrule');
		$pdoAccess = D('Adminaccess');
		$data=array();//用来存放最后呈现模板的数据
		if(!empty($_POST)){
			
			$ce = $pdo->create();
			if($ce){
				$re=$pdo->add();
				if($re){
					//在用户-用户组中添加数据
					$id=$pdo->getLastInsID();
					$result = $pdoAccess->data(array('group_id'=>$id))->add();
					if($result){
						//添加成功
						$info=array('mes'=>1,'content'=>'添加成功!');
						$this->ajaxReturn($info);
					}else{
						//用户组-用户关联表中没有添加成功
						$info=array('mes'=>4,'content'=>'用户组添加成功!用户-用户组关联表添加失败！');
						$this->ajaxReturn($info);
					}
					
				}else{
					//添加失败
					$info=array('mes'=>2,'content'=>'添加失败!');
					$this->ajaxReturn($info);
				}
			}else{
				//创建数据失败
				$error=$pdo->getError();
				$info=array('mes'=>3,'content'=>$error);
				$this->ajaxReturn($info);
				
			}
		}
		//查询数据呈现在模板上
		//查询用户组表获取用户组名，
		 $pdoGroupArr = $pdo->field('id,title,rules')->select();
		 $pdoGroupcount = $pdo->count();
		//查询权限表，获取权限名，描述
		foreach ($pdoGroupArr as $k=>$v) {
			$data[$k]['title']=$v['title'];	
			$data[$k]['id']=$v['id'];
			//查询用户组——用户关联表。获取每个用户组中的用户总数
			$pdoAccessArr = $pdoAccess->where("group_id=".$v['id'])->count();			
			$data[$k]['count']=$pdoAccessArr;
			$rules = explode(',', $v['rules']);//拆分rules			
			if($rules){									
				foreach( $rules as $v2){					
					if(preg_match("/^\d+$/", $v2)){//用正则过滤判断是否为整型						
						$pdoRuleArr = $pdoRule->field('title,content')->where(array("id=$v2"))->select();
						$data[$k]['rulename'].=$pdoRuleArr[0]['title'].',';
						$data[$k]['content'].=$pdoRuleArr[0]['content'].',';		
					} 										
				} 
				$data[$k]['rulename']=trim($data[$k]['rulename'],',');
				$data[$k]['content']=trim($data[$k]['content'],',');				
			}			
		} 
		//呈现到模板上
		$this->assign('groupcount',$pdoGroupcount);
		$this->assign('data',$data);		
		$this->display();
	}
	
	/*
	 * @discribe 用户组编辑
	 */
	function admingroupSave(){
		if(!empty($_POST)){
			$pdo = D('admingroup');
			$id=$_POST['id'];
			unset($_POST['id']);
			$ce = $pdo->create();
			if($ce){
				$re = $pdo->where(array('id'=>$id))->save();
				if($re){
					//添加成功
					$info=array('mes'=>1,'content'=>'添加成功!');
					$this->ajaxReturn($info);
				}else{
					//添加失败
					$info=array('mes'=>2,'content'=>'添加失败!');
					$this->ajaxReturn($info);
				}
			}else{
				//创建数据失败
				$error=$pdo->getError();
				$info=array('mes'=>3,'content'=>$error);
				$this->ajaxReturn($info);
				
			}
			
		}
	}
	
	/*
	 * @discribe 用户组删除
	*/
	function admingroupDelete(){
		if(!empty($_POST)){
			$pdo = D('admingroup');
			$id=$_POST['id'];
			
				$re = $pdo->where(array('id'=>$id))->delete();
				if($re){
					//删除用户——用户组关联表的数据
					$pdoAccessRe = D('Adminaccess')->where('group_id='.$id)->delete();
					if($pdoAccessRe){
						$count = $_POST['count']-1;
						$info=array('mes'=>1,'content'=>'删除成功!','count'=>$count);
						$this->ajaxReturn($info);
					}else{
						$count = $_POST['count']-1;
						$info=array('mes'=>3,'content'=>'用户组删除成功!存在碎片数据没有删除。','count'=>$count);
						$this->ajaxReturn($info);
					}
				}else{
					//失败
					$info=array('mes'=>2,'content'=>'删除失败!');
					$this->ajaxReturn($info);
				}
			
	
		}
	}
	
}